﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _120_委托与事件区别
{
    class Example
    {
        /// <summary>
        /// 委托就是相当于一个类，public的类当然可以直接.出来
        /// </summary>
        /// <param name="BossName"></param>
        /// <param name="time"></param>
        public delegate void OnBossBackDelegate(string BossName, string time);

        #region 事件的使用方式一：定义一个事件，事件的触发需要使用实例化对象来触发
        /// <summary>
        /// 定义一个事件，一个类的字段
        /// </summary>
        public event OnBossBackDelegate OnBossBackEvent;
        /// <summary>
        /// 定义事件的触发方式，通过实例化来调用或者内部触发
        /// </summary>
        /// <param name="BossName"></param>
        /// <param name="time"></param>
        public void OnBossBackInvoke(string BossName, string time)
        {
            OnBossBackEvent.Invoke(BossName, time);
        }
        #endregion

        #region 事件的使用方式二：定义一个事件，事件的触发通过静态方法来触发
        /// <summary>
        /// 定义一个事件，静态的字段，外部可以访问
        /// </summary>
        public static event OnBossBackDelegate OnBossBackEventStatic;
        /// <summary>
        /// 定义事件的触发方式，静态方法，外部可以直接调用
        /// </summary>
        /// <param name="BossName"></param>
        /// <param name="time"></param>
        public static void OnBossBackEventStaticInvoke(string BossName, string time)
        {
            OnBossBackEventStatic(BossName, time);
        }
        #endregion

    }
}
